package cn.fscode.code.generator.service;

import cn.fscode.code.generator.model.po.SysDictItemPO;
import com.baomidou.mybatisplus.core.metadata.IPage;

import java.util.List;
import java.util.Map;

/**
 * 字典业务层
 * @author shenguangyang
 */
public interface ISysDictItemService {

    /**
     * 根据字典类型查询字典数据
     *
     * @param dictCode 字典编码
     * @return 字典数据集合信息
     */
    List<SysDictItemPO> listByCode(String dictCode);

    /**
     * 通过code集合获取字典
     * @param codes code
     * @return key = code
     *         value (字典的键值对)
     *           key = itemValue
     *           value = SysDictItemPO 对象
     */
    Map<String, Map<String, SysDictItemPO>> listByCodes(List<String> codes);

    /**
     * 根据字典编码 + 字典值查询查询字典条目
     * @deprecated
     * @param dictCode 字典编码
     * @param dictValue 字典值
     * @return 字典数据集合信息
     */
    SysDictItemPO getByCode(String dictCode, String dictValue);

    SysDictItemPO getById(Long id);

    /**
     * 根据条件分页查询字典数据
     *
     * @param dictItem 字典数据信息
     * @return 字典数据集合信息
     */
    IPage<SysDictItemPO> page(SysDictItemPO dictItem);

    /**
     * 批量删除字典数据信息
     *
     * @param dictIds 需要删除的字典ID
     */
    void deleteByIds(Long[] dictIds);

    /**
     * 批量删除字典数据信息
     *
     * @param dictId 需要删除的字典ID
     */
    void deleteById(Long dictId);

    /**
     * 新增保存字典数据信息
     *
     * @param dictData 字典数据信息
     * @return 结果
     */
    int saveDictItem(SysDictItemPO dictData);

    /**
     * 修改保存字典数据信息
     *
     * @param dictData 字典数据信息
     * @return 结果
     */
    int updateDictItem(SysDictItemPO dictData);
}
